package boboUtil;

//双端队列接口
public interface BoboDeque<E> extends BoboQueue<E>{
    //插入
    boolean add(E e);   //tail
    void addFirst(E e);
    void addLast(E e);
    boolean offer(E e); //tail
    boolean offerFirst(E e);
    boolean offerLast(E e);

    //删除
    E remove();         //remove first element
    E removeFirst();
    E removeLast();
    E poll();           //remove first element
    E pollFirst();
    E pollLast();
    //从此双端队列中移除第一次出现的指定元素
    boolean removeFirstOccurrence(Object o);
    //从此双端队列移除最后一次出现的指定元素。
    boolean removeLastOccurrence(Object o);

    //查询（get）
    E getFirst();
    E getLast();
    E peekFirst();
    E peekLast();

    E element();    //获取，但不移除头部
    E peek();

    //stack method
    void push(E e);     //add to head
    E pop();            //remove head

}
